define('limitheight', function(require, exports, module) {
    var $ = require('jquery');
    $.fn.extend({
        limitheight: function(opt) { // 内容为纯文本的
            opt = $.extend({
                "limit" : 30,
                "fill" : "...",
                'text_container' :'', // 子元素
                'pattern' : "(\\s)*([a-zA-Z0-9]{1}|\\W)(\.\.\.)?$", // 容器中要删除元素的最大数量
            },
            opt);

            var h = $(this).height();
            while ($(this).outerHeight() > opt.limit) {
                if(opt.text_container){
                    $(this).find(opt.text_container).text($(this).find(opt.text_container).text().replace(new RegExp(opt.pattern), opt.fill));
                }
                else{
                    $(this).text($(this).text().replace(new RegExp(opt.pattern), opt.fill));
                }
            };
            return this;
        },
        limitheight2: function(opt) { // 内容为同类标签的元素
            opt = $.extend({
                    "limit" : 30, // 限制高度
                    "max_element" : 9, // 容器中要删除元素的最大数量
                    // 'pattern' : "[\\s\\S]*?<a .*?>[\\s\\S]*?<\\/a>[\\s\\S]*?、", // 这里为正则匹配的字条串
                    "pattern" : "", // 这里为正则匹配的字条串
                },
                opt);
            var $this = $(this);
            var h = $this.height();

            for (var i = opt.max_element; i > 0; i --){
                if(h > opt.limit){
                    // console.log(i);
                    // console.log(h);
                    // console.log(opt.limit);
                    var pattern = new RegExp("(" + opt.pattern + "){"+i+"}");
                    var html = $this.html();
                    if(pattern.exec(html) !== null){
                        obj = pattern.exec(html);
                        html = obj[0];
                        // console.log(html);
                        $this.html(html + '...');
                        h = $this.height();
                    }
                    else{
                        continue;
                    }
                }
                else{
                    break;
                }
            }
            return this;
        }
    });
});